#pragma once
#include <Windows.h>
#include "..\typedefs\typedefs.h"

namespace NEngine {

// ================================================================================================
// Simple class that handles window stuff
// ================================================================================================
class CWindow {

private:

    HINSTANCE hinst;      // -- handle to the instance 
    HWND hwnd;            // -- handle the window
    int cmdshow;          // -- cmdshow
    RECT rc;              // -- window rectangle

    // -- static windproc function
    static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wpar, LPARAM lpar);    

public:

    // -- constuctor
    CWindow(HINSTANCE hinst, int cmdshow);
    
    // -- intialize the window
    HRESULT InitWindow(uint width, uint height);

    // -- accessor methods
    const HWND& GetWinHandle();
    const RECT& GetRect();

};

// ================================================================================================
// Constructor
// ================================================================================================
inline CWindow::CWindow(HINSTANCE _hinst, int _cmdshow) : hinst(_hinst), cmdshow(_cmdshow) {
}

// =================================================================================================
// Accessor methods
// =================================================================================================
inline const HWND& CWindow::GetWinHandle() {
    return hwnd;
}

inline const RECT& CWindow::GetRect() {
    return rc;
}

} // namespace NEngine
